package io.gitee.milklynk.vo.request;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Builder;
import lombok.Data;

/**
 * 外部工具
 */
@Data
@Builder
public class Tool {
    /**
     * tool 的类型。目前仅支持 function。
     */
    @JSONField(name = "type")
    private String type;

    /**
     * tool 的方法
     */
    @JSONField(name = "function")
    private Function function;

    /** */
    @Data
    @Builder
    public static class Function{
        /**
         * function 的功能描述，供模型理解何时以及如何调用该 function。
         */
        @JSONField(name = "description")
        private String description;

        /**
         * 要调用的 function 名称。必须由 a-z、A-Z、0-9 字符组成，或包含下划线和连字符，最大长度为 64 个字符。
         */
        @JSONField(name = "name")
        private String name;

        /**
         * function 的输入参数，以 JSON Schema 对象描述。请参阅 Function Calling 指南获取示例，并参阅JSON Schema 参考了解有关格式的文档。省略 parameters 会定义一个参数列表为空的 function。
         */
        @JSONField(name = "parameters")
        private Object parameters;
    }
}
